<?php

namespace Reusify\Helper;

/**
 * Class Week
 *
 * 提供日期对应星期几的功能
 */
class Week
{
    /**
     * 获取某个日期对应的星期几
     *
     * @param string $date 日期字符串，如 '2025-09-05'
     * @param string $pre 星期前缀，默认 '星期'，可设置为空或其他,只有中文有效
     * @param string $lang 输出语言，'zh' 中文（默认），'en' 英文
     * @return string 返回格式化后的星期，如 '星期五' 或 'Friday'
     */
    public static function getWeekDay(string $date, string $pre = '星期', string $lang = 'zh'): StringHelper
    {
        // 转换日期为时间戳
        $timestamp = strtotime($date);
        if ($timestamp === false) {
            throw new \InvalidArgumentException("无效的日期: $date");
        }

        // PHP 1（周一）到 7（周日）
        $week = date('N', $timestamp);

        // 中文星期
        $zh = ['一', '二', '三', '四', '五', '六', '日'];

        // 英文星期
        $en = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

        // 根据语言返回
        switch (strtolower($lang)) {
            case 'en':
                return $en[$week - 1];
            case 'zh':
            default:
                return $pre . $zh[$week - 1];
        }
    }


}
